#ifndef IGSLIB_IBATTERY_MANAGER_H
#define IGSLIB_IBATTERY_MANAGER_H

#include "igslib_common_use.h"
#include "igslib_iserial_manager.h"

namespace igslib
{
    /*!
     * 表示一個電池資源裝置。
     */
	struct IBattery:public IComponent
	{
        /*!
         * 取得目前剩餘電量。
         * @return 目前剩餘電量。
         */
        virtual float GetCapacity()=0;
        /*!
         * 是否在低電壓狀態？
         * @return true表示在低電壓狀態。
         * @note
         *     實務上，在低電壓狀態將導致遊戲不穩定，應顯示錯誤訊息。
         */
        virtual bool IsLowVoltage()=0;
        /*!
         * 若實作是使用SPI通訊介面，用此函式輸入SPI的實作。
         * @param a0 SPI的實作。
         */
        virtual void SetSPI(ISpi*)=0;
	};

	struct IBatteryManager:IManager<IBattery*>
	{
		/*!
         * 創建MH主板上根據專案特規實作MCU IBattery資源。
         * @param a0 專案名。
         * @return MCU端 IBattery 介面
         * @note
         *     目前已實作專案名對照如下：
         *     "DragonBallRace"：龍珠賽球
         */
        virtual IBattery* New_ProjMCU(const std::string&)=0;
		
		
	};
}
extern "C"{
    igslib::IBatteryManager* GetBatteryManagerInstance();
};

#endif

